#include <iostream>
#include <utility>
#include <typeinfo>

using namespace std;

template <typename T1, typename T2>
struct A;
template <typename T1, typename T2>
struct A;

template <typename T>
struct B
{
	A<T, void> a;
};

template <typename T1, typename T2 = void>
struct A
{

};

int main()
{
	cout << typeid(B<double>).name() << endl;
	cout << typeid(B<double>::a).name() << endl;

	return 0;
}